<?php 
require_once ('../connect.php');

//читаем параметры
$curPage = $_POST['page'];  // текущая страница
$rowsPerPage = $_POST['rows']; // количество строк на странице
$sortingField = $_POST['sidx']; // по какому полю БД сортировка
$sortingOrder = $_POST['sord'];  // в каком порядке сортировка (убывания/возрастания)
$detailed = $_GET['detailed']; // если равно 0 то грид иначе субгрид
$dateStart = $_GET['dateStart']; // Начальная дата
$dateEnd = $_GET['dateEnd']; // Конечная дата
$firstRowIndex = $curPage * $rowsPerPage - $rowsPerPage; //номер первой строки для запроса
$maxSpeakTime = date("H:i:s", mktime(1, 0, 0)); //максимально предпологаемое время разговора


//подключаемся к базе
$mysql = connect();
$sql = "SET NAMES 'utf8'";
$mysql->query($sql);

if ($detailed == 0) {
    //определяем количество записей в таблице
    $query = "SELECT COUNT(*) AS count FROM Users";
    $result = $mysql->query($query);
    $row = $result->fetch_array(MYSQLI_ASSOC);
    $totalRows = $row['count'];
   
	//получаем список пользователей из базы	
    $query = "SELECT ID, NAME, (SELECT sec_to_time( sum( time_to_sec( DURATION ) ) ) 	
						  FROM CallLog 
						  WHERE   (`Users`.`NUMBER` = `CallLog`.`EXT`)
                    AND (`MMDDTT` BETWEEN '$dateStart' AND '$dateEnd'))	
					AS TOTALTIME
			  FROM Users
			  ORDER BY $sortingField $sortingOrder 
			  LIMIT $firstRowIndex, $rowsPerPage";
$response->SQL = $query;		  
    $result = $mysql->query($query);
    
    //сохраняем номер текущей страницы, общее количество страниц и общее количество записей
    $response->page = $curPage;
    $response->total = ceil($totalRows / $rowsPerPage);
    $response->records = $totalRows;
    
    $i = 0;
    while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
        $response->rows[$i]['id'] = $row['ID'];
        $response->rows[$i]['cell'] = array($row['ID'], $row['NAME'], $row['TOTALTIME']);
        $i++;
    }
    echo json_encode($response);
} elseif ($detailed == 1) {
    $id = $_GET['id'];
    //определяем количество записей в таблице
    $query = "SELECT COUNT(id) AS count  
		  	  FROM CallLog 
		  	  WHERE EXT=(SELECT NUMBER FROM Users WHERE ID =$id) AND (`MMDDTT` BETWEEN '$dateStart' AND '$dateEnd')";
    $result = $mysql->query($query);
    $row = $result->fetch_array(MYSQLI_ASSOC);
    $totalRows = $row['count'];
    
    $query = "SELECT DIALED, DURATION, MMDDTT, EXT 
		  FROM CallLog 
		  WHERE (EXT=(SELECT NUMBER FROM Users WHERE ID =$id)) AND (`MMDDTT` BETWEEN '$dateStart' AND '$dateEnd') 
		  ORDER BY $sortingField $sortingOrder 
		  LIMIT $firstRowIndex, $rowsPerPage";
	$response->SQL = $query;	  
    $result = $mysql->query($query);
    
    //сохраняем номер текущей страницы, общее количество страниц и общее количество записей
    $response->page = $curPage;
    $response->total = ceil($totalRows / $rowsPerPage);
    $response->records = $totalRows;
    
    $i = 0;
    while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
    	if ($row['DURATION'] > $maxSpeakTime)
		  $hint = "&nbsp;(<ACRONYM title='Требуется ручная проверка. Такое длительное время разговоро может произойти в том случае когда сотрудник не положил нормально трубку телефона на место либо у АТС произошёл сбой. Хотя не исключено что кто-то действительно много разговаривает по телефону'>?</ACRONYM>)";		
		else
		  $hint = "";
        $response->rows[$i]['id'] = $id;
        $response->rows[$i]['cell'] = array($row['DIALED'], $row['DURATION'].$hint, $row['MMDDTT']);
        $i++;
    }
    echo json_encode($response);
}

?>